package com.ccp.dev.workflow.dao;

import com.ccp.dev.core.basic.base.IBaseMapper;
import com.ccp.dev.workflow.bpminterface.IActDefMapper;
import com.ccp.dev.workflow.model.BpmNodeButton;

import java.util.List;
import java.util.Map;

/**
 * ClassDescribe:
 * 对象功能:自定义工具条 持久层接口
 * @author :wangcheng
 * Date: 2019-06-17
 */
public interface BpmNodeButtonDao extends IBaseMapper<BpmNodeButton, String>, IActDefMapper {

    /**
     * 根据流程定义Id删除按钮
     * @param procDefId 流程模型id
     */
    void delByModelId(String procDefId);

    /**
     * 根据流程定义id获取节点按钮信息
     * @param procDefId 流程定义id
     * @return 流程按钮列表
     */
    List<BpmNodeButton> queryByProcDefId(String procDefId);

    /**
     * 根据流程定义ID删除按钮——清除按钮配置
     * @param procDefId  流程定义ID
     */
    void delByDefId(String procDefId);

    /**
     * 根据流程定义id删除流程启动按钮
     * @param procDefId 流程定义id
     */
    void delByStartForm(String procDefId);

    /**
     * 根据流程定义ID和节点ID删除按钮
     * @param map
     */
    void delByNodeId(Map map);

    /**
     * 根据流程定义ID获取起始表单的操作按钮
     * @param procDefId   流程定义ID
     * @return 节点按钮列表
     */
    List<BpmNodeButton> getByStartForm(String procDefId);

    /**
     * 根据流程定义ID和节点ID获取操作按钮
     * @param map
     * @return 节点按钮列表
     */
    List<BpmNodeButton> getByDefNodeId(Map map);

    /**
     * 根据流程节点id删除流程节点的按钮信息
     * @param nodeId 节点id
     */
    void delByNodeId(String nodeId);

    /**
     * 保存排序
     *
     * @param param
     */
    void updSn(Map param);

    /**
     * 根据流程定义和节点操作类型判断操作类型是否存在
     * @param map
     * @return
     */
    Integer isStartFormExist(Map map);

    /**
     * 根据流程定义和节点操作类型判断是否已经存在
     * @param map
     * @return
     */
    Integer isExistByNodeId(Map map);

    /**
     * 根据流程定义和节点操作类型判断操作类型是否存在
     * @param map
     * @return
     */
    Integer isStartFormExistForUpd(Map map);

    /**
     * 根据流程定义和节点操作类型判断是否已经存在
     * @param map
     * @return
     */
    Integer isExistByNodeIdForUpd(Map map);

    /**
     * 根据流程定义ID获取操作按钮列表
     * @param modelId
     * @return
     */
    List<BpmNodeButton> queryByModelId(String modelId);
}
